package com.leo.offer;

/**
 *
 * @author xuexiaolei
 * @version 2018年03月08日
 */
public class T18 {
    /**
     * 判断B树是不是A树的子结构
     * @param a
     * @param b
     * @return
     */
//    public static boolean isSon(TreeNode a, TreeNode b){
//        if (a == null && b == null){ return true; }
//        if (a == null && b != null){ return false; }
//        if (a.val == b.val){
//            if (b.left == null && b.right == null){
//                return true;
//            }else if (b.left == null){
//                return isSon(a.right, b.right);
//            }else if (b.right == null){
//                return isSon(a.left, b.left);
//            }else {
//                return isSon(a.left, b.left) && isSon(a.right, b.right);
//            }
//        }else {
//            return isSon(a.left, b) || isSon(a.right, b);
//        }
//    }

    public static boolean isSon(TreeNode a, TreeNode b){
        boolean res = false;
        if (a != null && b!= null){
            res = isSame(a, b);
            if (!res){ res = isSon(a.left, b); }
            if (!res){ res = isSon(a.right, b); }
        }
        return res;
    }
    //判断是否相等，树b要求少，树a要求多
    private static boolean isSame(TreeNode a, TreeNode b){
        if (a == null) { return false; }
        if (b == null) { return true; }
        if (a.val == b.val){
            return isSame(a.left, b.left) && isSame(a.right, b.right);
        }
        return false;
    }

    public static void main(String[] args) {
    }
}
